www.gusucode.com > VC++ 信息加密聊天源代码-源码程序 > VC++ 信息加密聊天源代码-源码程序\code\SecChat\Setup.cpp
//Download by http://www.NewXing.com // Setup.cpp : implementation file // #include "stdafx.h" #include "secretchat.h" #include "Setup.h" #include "SecretChatDlg.h" //主窗口类头文件 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSetup dialog CSetup::CSetup(CWnd* pParent /*=NULL*/) : CDialog(CSetup::IDD, pParent) { //{{AFX_DATA_INIT(CSetup) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CSetup::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSetup) DDX_Control(pDX, IDC_SETUPTAB, m_setupTab); DDX_Control(pDX, IDC_DINGWEI, m_dingWei); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSetup, CDialog) //{{AFX_MSG_MAP(CSetup) ON_NOTIFY(TCN_SELCHANGE, IDC_SETUPTAB, OnSelchangeSetuptab) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSetup message handlers void CSetup::OnOK() { CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd(); CWaitCursor WaitCursor; //等待光标 if( !m_secretKeySetupDlg.UpdateData()) return; if( !m_privateManagerDlg.UpdateData()) return; if( !m_publicKeyManagerDlg.UpdateData()) return; if( !m_generalDlg.UpdateData()) return; //设置密钥设置选项 CString strUser, strFriend; if(m_secretKeySetupDlg.m_userIndex == -1) { MessageBox( "没有选择用户私钥", "密聊", MB_ICONINFORMATION); } else { m_secretKeySetupDlg.m_userPrivateKey.GetLBText( m_secretKeySetupDlg.m_userIndex, strUser); AfxGetApp()->WriteProfileString( "SecretKeySetup", "UserPrivateKey", strUser); } if(m_secretKeySetupDlg.m_friendIndex == -1) { MessageBox( "没有选择好友公钥", "密聊", MB_ICONINFORMATION); } else { m_secretKeySetupDlg.m_friendPublicKey.GetLBText( m_secretKeySetupDlg.m_friendIndex, strFriend); AfxGetApp()->WriteProfileString( "SecretKeySetup", "FriendPublicKey", strFriend); } //设置常规选项 AfxGetApp()->WriteProfileInt("General", "ArriveSound", m_generalDlg.m_arriveSound); AfxGetApp()->WriteProfileInt("General", "ArriveShow", m_generalDlg.m_arriveShow); AfxGetApp()->WriteProfileInt("General", "Top", m_generalDlg.m_top); AfxGetApp()->WriteProfileInt("General", "Tray", m_generalDlg.m_tray); AfxGetApp()->WriteProfileInt("General", "LANStartup", m_generalDlg.m_LANStartup); CString strIP; BYTE b1,b2,b3,b4; m_generalDlg.m_LANIP.GetAddress(b1,b2,b3,b4); //获得IP m_generalDlg.m_LANIP.GetWindowText(strIP); //获得IP //AfxMessageBox(strIP); // strIP.Format( // "%d.%d.%d.%d", // b1,b2,b3,b4); //把数字转换成字符 AfxGetApp()->WriteProfileString("General", "LANIP", strIP); AfxGetApp()->WriteProfileInt("General", "Startup", m_generalDlg.m_startup); //启动时是否自动运行 HKEY hkey; //键句柄 if(m_generalDlg.m_startup) { //启动 ::RegOpenKeyEx( HKEY_LOCAL_MACHINE/*主键*/, "SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\RUN"/*子键*/, NULL, KEY_ALL_ACCESS, &hkey); ::RegSetValueEx( hkey, "SecretChat"/*键值*/, 0, REG_SZ, (LPBYTE)__argv[0]/*键值的数据*/, 256); //把sz的数据写入到记事本键值 ::RegCloseKey(hkey); //关闭 } else { //关闭 ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\RUN", NULL, KEY_ALL_ACCESS, &hkey); ::RegDeleteValue( hkey, "SecretChat"/*键值*/); //删除键值 ::RegCloseKey(hkey); } ////根据注册表数据进行设置 pSecretChatDlg->MyUpdateData(); CDialog::OnOK(); } void CSetup::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } BOOL CSetup::OnInitDialog() { CDialog::OnInitDialog(); //添加选项卡 TC_ITEM tItem; tItem.mask = TCIF_TEXT; tItem.pszText = "密钥设置"; tItem.cchTextMax = strlen( tItem.pszText); m_setupTab.InsertItem( 0, &tItem); //添加选项 tItem.pszText="私钥管理"; tItem.cchTextMax = strlen( tItem.pszText); m_setupTab.InsertItem( 1, &tItem); //添加选项 tItem.pszText="公钥管理"; tItem.cchTextMax = strlen( tItem.pszText); m_setupTab.InsertItem( 2, &tItem); //添加选项 tItem.pszText="常规"; tItem.cchTextMax = strlen( tItem.pszText); m_setupTab.InsertItem( 3, &tItem); //添加选项 tItem.pszText="关于"; tItem.cchTextMax = strlen( tItem.pszText); m_setupTab.InsertItem( 4, &tItem); //添加选项 CRect rect; m_dingWei.GetWindowRect( &rect); ScreenToClient( &rect); m_secretKeySetupDlg.Create(IDD_SECRETKEYSETUP,this); m_privateManagerDlg.Create(IDD_PRIVATEMANAGER,this); m_publicKeyManagerDlg.Create(IDD_PUBLICKEYMANAGER,this); m_generalDlg.Create(IDD_GENERAL,this); m_aboutDlg.Create(IDD_ABOUTBOX,this); m_secretKeySetupDlg.MoveWindow( &rect); m_privateManagerDlg.MoveWindow( &rect); m_publicKeyManagerDlg.MoveWindow( &rect); m_generalDlg.MoveWindow( &rect); m_aboutDlg.MoveWindow( &rect); ShowTabWindow(0); //更新下拉列表 ShowTabWindow(m_index); //每次显示前都要设置m_index的值 //当没有私钥时提示生成 return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSetup::OnSelchangeSetuptab(NMHDR* pNMHDR, LRESULT* pResult) { ShowTabWindow( m_setupTab.GetCurSel() ); *pResult = 0; } void CSetup::ShowTabWindow(int index) { CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd(); switch(index) { case 0: m_secretKeySetupDlg.ShowWindow( SW_SHOW); m_privateManagerDlg.ShowWindow( SW_HIDE); m_publicKeyManagerDlg.ShowWindow( SW_HIDE); m_generalDlg.ShowWindow( SW_HIDE); m_aboutDlg.ShowWindow( SW_HIDE); //设置窗口图标 SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE); /*删除下拉列表中的所有字符*/ m_secretKeySetupDlg.m_userPrivateKey.ResetContent(); //添加指定目录的文件到下拉列表,并选择指定的项 m_secretKeySetupDlg.m_userPrivateKey.Dir( DDL_DIRECTORY, pSecretChatDlg->m_appName + "\\user\\*.sk"); //m_secretKeySetupDlg.m_userPrivateKey.SetCurSel(0); //如果只有一个项就选它 m_secretKeySetupDlg.m_userPrivateKey.SelectString( -1, AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey")); m_secretKeySetupDlg.m_friendPublicKey.ResetContent(); m_secretKeySetupDlg.m_friendPublicKey.Dir( DDL_DIRECTORY, pSecretChatDlg->m_appName + "\\friend\\*.pk"); m_secretKeySetupDlg.m_friendPublicKey.SelectString( -1, AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey")); SetWindowText("设置 - 密钥设置"); break; case 1: m_secretKeySetupDlg.ShowWindow( SW_HIDE); m_privateManagerDlg.ShowWindow( SW_SHOW); m_publicKeyManagerDlg.ShowWindow( SW_HIDE); m_generalDlg.ShowWindow( SW_HIDE); m_aboutDlg.ShowWindow( SW_HIDE); SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE); //删除全部列表 m_privateManagerDlg.m_userList.ResetContent(); //把指定目录的sk文件全部添加到列表 m_privateManagerDlg.m_userList.Dir( DDL_DIRECTORY, pSecretChatDlg->m_appName + "\\user\\*.sk"); //选择列表中的某个字符 m_privateManagerDlg.m_userList.SelectString( -1, AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey")); SetWindowText("设置 - 私钥管理"); break; case 2: m_secretKeySetupDlg.ShowWindow( SW_HIDE); m_privateManagerDlg.ShowWindow( SW_HIDE); m_publicKeyManagerDlg.ShowWindow( SW_SHOW); m_generalDlg.ShowWindow( SW_HIDE); m_aboutDlg.ShowWindow( SW_HIDE); SetIcon(AfxGetApp()->LoadIcon(IDI_IDIOGRAPH), FALSE); //删除全部列表 m_publicKeyManagerDlg.m_friendList.ResetContent(); //把指定目录的sk文件全部添加到列表 m_publicKeyManagerDlg.m_friendList.Dir( DDL_DIRECTORY, pSecretChatDlg->m_appName + "\\friend\\*.pk"); //选择列表中的某个字符 m_publicKeyManagerDlg.m_friendList.SelectString( -1, AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey")); SetWindowText("设置 - 公钥管理"); break; case 3: m_secretKeySetupDlg.ShowWindow( SW_HIDE); m_privateManagerDlg.ShowWindow( SW_HIDE); m_publicKeyManagerDlg.ShowWindow( SW_HIDE); m_generalDlg.ShowWindow( SW_SHOW); m_aboutDlg.ShowWindow( SW_HIDE); SetIcon(AfxGetApp()->LoadIcon(IDI_SETUP), FALSE); SetWindowText("设置 - 常规"); break; case 4: m_secretKeySetupDlg.ShowWindow( SW_HIDE); m_privateManagerDlg.ShowWindow( SW_HIDE); m_publicKeyManagerDlg.ShowWindow( SW_HIDE); m_generalDlg.ShowWindow( SW_HIDE); m_aboutDlg.ShowWindow( SW_SHOW); SetIcon(AfxGetApp()->LoadIcon(IDI_SETUP), FALSE); SetWindowText("设置 - 关于"); break; } m_setupTab.SetCurSel(index); //设置选项的显示索引 }